package com.woniuxy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.List;

/**
 * @RequestMapping:注解
 * 主要的功能：请求映射的，给前台设置请求到控制器中的路径或方法
 * 位置：可以放在类，也可以放在方法上,
 *    说明：一个Controller可以编写多个方法，每个方法就是一个功能，如果在类上声明实际上的作用就相当于模块的功能
 *          如果放在方法上实际上就是这个方法对外提供的路径，最终对外提供的路径是：类上@RequestMapping注解的声明的value值+对应方法上@RequestMapping的声明的value值
 * @RequestMapping常用的属性如下
 * value:编写请求路径地址
 * value:path与value作用一样,一般都是用value,基本上没有人使用path
 * method:表示HTTP协议请求方法,常用的方法
 * RequestMethod.GET
 * RequestMethod.POST
 * RequestMethod.DELETE
 * Spring4.3之后，新增了@GetMapping,@PostMapping,@PutMapping,@DeleteMapping，@PathMapping注解，
 * 这几个注解可以指定的属性和@RequestMapping注解类似，
 * 区别在于@GetMapping注解只支持GET方式的请求；@PostMapping注解只支持POST方式的请求；
 * @PutMapping、@DeleteMapping,@PatchMapping分别对应PUT请求、DELETE请求和PATCH请求，使用比较少。
 * 注意：如果在@RequestMapping只有一个属性，value,那么value可以省略不写
 */
@Controller
@RequestMapping("/user")
public class HelloController {
    //@RequestMapping(value = "/hello",method = RequestMethod.POST)
    @GetMapping(value = "/hello")
    public ModelAndView hello(){
        ModelAndView mav=new ModelAndView();
        mav.addObject("msg","基于注解的Controller");
        mav.setViewName("welcome");
        return mav;
    }
}
